package com.qumitech.visualnovel.service.player;

import java.util.*;
import com.alibaba.fastjson.JSONObject;
import com.qumitech.visualnovel.model.common.BaseRsp;
import com.qumitech.visualnovel.model.dto.AccountInfoQueryDTO;
import com.qumitech.visualnovel.model.dto.BookReadQueryDTO;
import com.qumitech.visualnovel.controller.vo.player.AccountForbiddenVo;
import com.qumitech.visualnovel.controller.vo.player.AccountPropertyVo;
import com.qumitech.visualnovel.controller.vo.player.UserResetRecordVO;
import com.qumitech.visualnovel.controller.vo.player.UserResetVO;
import com.qumitech.visualnovel.model.dao.console.AccountLogin;
import com.qumitech.visualnovel.model.dao.console.AccountRegister;

import java.util.List;

public interface PlayerInfoService {

    JSONObject getAccountList(AccountInfoQueryDTO param);

    JSONObject getAccountDetail(String accountId);

    JSONObject accountLocationOptions();

    JSONObject getAccountPreview(String accountId);

    JSONObject accountUpdate(AccountPropertyVo accountPropertyVo);

    JSONObject accountForbiddenAdd(AccountForbiddenVo accountForbiddenVo);

    JSONObject accountForbiddenDel(String forbiddenId);

    JSONObject createVoiceRoom(String accountId);

    JSONObject getRewardList(String appId, String startTime, String endTime, int offset, int limit);

    int getAccountLoginCount(Integer accountId, String startTime, String endTime, String appId);

    List<AccountLogin> getAccountLoginList(Integer accountId, String startTime, String endTime, String appId, int offset,
                                           int limit, String orderType, String orderBy);

    int getAccountRegisterCount(Integer accountId, String startTime, String endTime, String appId);
    List<AccountRegister> getAccountRegisterList(Integer accountId, String startTime, String endTime, String appId, int offset,
                                                 int limit, String orderType, String orderBy);

    BaseRsp getUserReset(Long uid);

    BaseRsp resetUserReset(UserResetVO userResetVO);

    BaseRsp getResetRecords(UserResetRecordVO resetRecordVO);

    BaseRsp listGuard(Long fromId, Long toId, String startTime, String endTime, String orderBy, String orderType, int offset, int limit);

    BaseRsp listNoble(Long uid, Long level, String startTime, String endTime, String orderBy, String orderType, int offset, int limit);

    BaseRsp getNobleConfig();

    JSONObject bookReadList(BookReadQueryDTO param);
}
